Tracing a software application is a mechanism for gathering performance and operational data while the application executes. Tracers may be deployed in a development or testing environment, where the data may be used to understand how the application performs under simulated loads. When deployed in production, a tracer may gather usage data that reflects the actual loads and performance of the application in response to those loads.
Tracing may be performed at different levels, where a heavyweight tracer may gather a large amount of data but may consume a large amount of overhead. A lightweight tracer may consume less overhead but may consume fewer less accurate or more generalized data. In some cases, the overhead may exceed 10 times the amount of resources that the application consumed on its own.
Software testing is a step in software development where an application may be tested using simulated loads and inputs to exercise the application. The application's behavior may be captured using a tracer or other data gathering system. In many cases, the simulated loads may reflect the expected loads that the application may experience.